import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
//创建Vuex.Store（仓库）的实例

export default new Vuex.Store({
  //存放公共数据的位置 公共的data
  state: {
    // 状态
    statusList: [],//(未审核、已审核)
    equipStatusList: [],//设备管理状态(闲置、使用、保修、处置)
    //分类
    categoryList:[],
    role:'',//用户角色
    permission:[],//权限
  },
  //state的派生状态,  相当于通过state计算出来的变量，公共的computed
  getters: {
    statusObj(state) {
      const obj = {}
      state.statusList.forEach(i => {
        obj[i.id] = {
          name:i.name,
          color:i.color
        };
      })
      return obj
    },
    equipStatusObj(state) {
      const obj = {}
      state.equipStatusList.forEach(i => {
        obj[i.id] = {
          name:i.name,
          color:i.color
        };
      })
      return obj
    },
    categoryObj(state) {
      const obj = {}
      state.categoryList.forEach(i => {
        obj[i.id] = i.name;
      })
      return obj
    },
    isAdmin:state=>state.role === 'admin'
  },
  //修改公共数据的方法,相当于methods
  mutations: {
    //setStatusList两个参数，第一个是state(上面的对象)第二个是调用时传递过来的值
    setStatusList(state,list){
      state.statusList = list
    },
    setEquipStatusList(state,list){
      state.equipStatusList = list
    },
    setCategoryList(state,list){
      state.categoryList = list;
    },
    setRole(state,role){
      state.role = role
    },
    setPermissions(state,arr){
      state.permission = arr
    }
  },
  //多个commit组合，写异步逻辑
  actions: {
    //第一个参数是  包含和store实例相同的属性和方法
    setUser(context,user){
      context.commit('setRole',user.role)
      context.commit('setPermissions',user.permissions)
    }
    // actoon不能只能h直接调用。
  },
  //
  modules: {
  }
})
